package com.hospital.hospitalserver.util;

import com.hospital.hospitalserver.enums.ResultCodeEnum;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 工具类
 * 负责将控制器层得到的数据传递给前端
 * 统一响应体
 * */

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Response {
    private int code;   //状态码
    private String msg;   //消息
    private Object data;   //对象数据


    /**
     * 成功响应静态方法
     * 不带参数
     * */
    public static Response success(){
        return new Response(ResultCodeEnum.SUCCESS.getCode(), ResultCodeEnum.SUCCESS.getMsg(), null);
    }

    /**
     * 成功响应静态方法，重载方法1
     * 带参数
     * */
    public static Response success(Object data){
        return new Response(ResultCodeEnum.SUCCESS.getCode(), ResultCodeEnum.SUCCESS.getMsg(), data);
    }

    /**
     * 成功响应静态方法，重载方法2
     * 带参数
     * */
    public static Response success(ResultCodeEnum resultCodeEnum,Object data){
        return new Response(resultCodeEnum.getCode(),resultCodeEnum.getMsg(),data);
    }

    /**
     * 成功响应静态方法，重载方法3
     * 带参数
     * */
    public static Response success(ResultCodeEnum resultCodeEnum){
        return new Response(resultCodeEnum.getCode(),resultCodeEnum.getMsg(),null);
    }

    /**
     * 成功响应静态方法，重载方法4
     * 带参数
     * */
    public static Response success(String msg,Object data){
        return new Response(ResultCodeEnum.SUCCESS.getCode(),msg,data);
    }

    /**
     * 自定义响应错误方法
     * 不带参数
     * */
    public static Response error(){
        return new Response(ResultCodeEnum.ERROR.getCode(), ResultCodeEnum.ERROR.getMsg(), null);
    }

    /**
     * 自定义响应错误方法
     * 带参数1
     * */
    public static Response error(Integer code,String msg){
        return new Response(code,msg,null);
    }

    /**
     * 自定义响应错误方法
     * 带参数2
     * */
    public static Response error(ResultCodeEnum resultCodeEnum){
        return new Response(resultCodeEnum.getCode(),resultCodeEnum.getMsg(),null);
    }

    /**
     * 自定义响应错误方法
     * 带参数2
     * */
    public static Response error(String msg){
        return new Response(203,msg,null);
    }

    /**
     * 自定义响应错误方法 重载方法
     * */
    public static Response error(Object data){
        return new Response(ResultCodeEnum.SYSTEM_ERROR.getCode(),ResultCodeEnum.SYSTEM_ERROR.getMsg(), data);
    }
}
